package com.ruoyi.rsikManage.service;

import com.ruoyi.electricity.domain.DTO.HourlyData;
import com.ruoyi.rsikManage.domain.AlarmEvent;
import com.ruoyi.rsikManage.domain.AlarmEventDto;
import com.ruoyi.rsikManage.domain.vo.AlarmUrlVo;
import com.ruoyi.rsikManage.domain.vo.AlarmtoSiteVo;
import com.ruoyi.rsikManage.domain.vo.ChartVo;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface AlarmEventService {
    void insertAlarmEvent(HashMap<String, Object> param);

    int insertAlarm(AlarmEvent alarmEvent);

    int insertAlarmBatch( List<AlarmEvent> alarmEvents);


    List<AlarmEvent> selectPageAlarmEvent(AlarmEvent alarmEvent);

    boolean updateAlarmEvent(Map<String, Object> alarm);

    int deleteAlarmEvent(Long[] ids);

    int deleteAlarmEvent2(Long[] ids);

    int updateDispose(Map<String, Object> param);

    List<AlarmEvent> selectCondition(AlarmEvent alarmEvent);

    List<AlarmEventDto> selectApproal(Date startTime, Date endTime);

    List<Map> selectAlarmEventByTimeandApeId(String apeId, Date startTime1, Date endTime1);

    List<AlarmEvent> selectAll(Date startTime, Date endTime);

    List<AlarmEvent> selectByIds(List<String> apeList);


    List<Map> selectAlarmNumCount(String startTime, String endTime);

    List<Map> selectAlarmNumCountV2(LocalDateTime startTime, LocalDateTime endTime, List<Long> unitCodes);


    Map<String, Object> selectEveryTypeNum(String startTime,String endTime,int i);

    Map<String, Object> selectEveryTypeNumForUnitCodes(LocalDateTime startTime,LocalDateTime endTime,int i,List<Long> unitCodes);


    int selectDictSize(String s);

    String selectDictContent(String s, String alarmLevel);

    List<Map> selectChildNum();

    Map<String, Object> selectChildContent(String s);

    int selectNum(String level);

    int selectByApproveSize();

    Map<String, Object> selectApproveCount(String startTime,  String endTime,String strFori);

    Map<String, Object> selectByApproveValue(String approve);

    List<ChartVo> selectDateCount(String startTime,  String endTime,String s);

    Map<String, Object> selectPointNum();

    List<String> selectAlarmTypeName();

    Map<String, Object> selectCountDay();

    Map<String, Object> selectCountLeft(String name);

    Map<String, Object> selectTypeAndName(int i, String s);

    List<Map> selectUrlImage(String name);

    List<String> selectStandMontior(String ids);

    List<AlarmtoSiteVo> selectStandsPlace();

    List<AlarmtoSiteVo> selectByDicValue(String dicValue);

    List<AlarmtoSiteVo> selectByid(String id);

    List<AlarmtoSiteVo> selectByDeviceId( String startTime,  String endTime,String monitorId);

    List<AlarmUrlVo> selectName();

    List<String> selectByName();

    List<String> selectByNames(String s);

    List<AlarmUrlVo> selectNumByName();

    List<AlarmUrlVo> selectFiveTypes(String s,String s1);

    List<String> selectLevel();

    List<String> selectType();

    List<Map> selectByType();

    List<AlarmUrlVo> selectThreeDayData(String s1, String s);

    List<AlarmUrlVo> selectSevenDayData(String s1, String s);

    List<AlarmUrlVo> selectFifteenDayData(String s1, String s);


    List<AlarmtoSiteVo> selectBymonitorIds(List<String> stringList);

    List<AlarmtoSiteVo> selectByDeviceIds(String startTime, String endTime, List<String> stringList);

    List<AlarmtoSiteVo> selectByDeviceIdsForUnitCodes(LocalDateTime startTime, LocalDateTime endTime, List<String> stringList,List<Long> unitCodes);


    List<AlarmUrlVo> selectUrls(String s1, String s);


    List<HourlyData> getHourlyDataQuery(Date startTime, Date endTime);

    List<HourlyData> getHourlyDataQuery1(Date startTime, Date endTime);
}
